#include "navigationbar.h"
#include <QDebug>

NavigationBar::NavigationBar(QWidget *parent) : QWidget(parent)
{

}
QPushButton* NavigationBar::createNavButton(const QString &text)
{
    QPushButton *button = new QPushButton(text, this);

        // 设置按钮样式
        QString buttonStyle = "QPushButton {"
                              "  height: 50px;" // 增加高度
                              "  font-size: 16px;" // 增大字体
                              "  font-weight: 500;" // 中等粗细
                              "  text-align: left;"
                              "  padding-left: 25px;" // 增加左侧内边距
                              "  background-color: transparent;" // 透明背景
                              "  border: none;" // 无边框
                              "  border-radius: 0;" // 无圆角
                              "  color: #2c6e49;" // 深绿色文字
                              "}"
                              "QPushButton:hover {"
                              "  background-color: #e8f5e9;" // 悬停时浅绿色背景
                              "}"
                              "QPushButton:pressed {"
                              "  background-color: #c8e6c9;" // 按下时稍深的绿色
                              "}"
                              "QPushButton:checked {"
                              "  background-color: #a5d6a7;" // 选中状态颜色
                              "  border-left: 4px solid #2c6e49;" // 左侧指示条
                              "}";

        button->setStyleSheet(buttonStyle);
        button->setCheckable(true); // 设置为可选中状态

        // 设置按钮固定高度
        button->setFixedHeight(50);

        return button;
}

void NavigationBar::paintEvent(QPaintEvent *event)
{
    QStyleOption opt;
        opt.initFrom(this);
        QPainter p(this);
        style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);

        // 绘制顶部和底部分隔线
        p.setPen(QColor("#d0e8d0"));
        p.drawLine(0, 0, width(), 0);
        p.drawLine(0, height()-1, width(), height()-1);

        QWidget::paintEvent(event);
}

void NavigationBar::setisAdmin(bool isAdmin)
{
    this->isAdmin=isAdmin;
    //qDebug()<<isAdmin;
    setupUI();
}

void NavigationBar::setupUI()
{
    // 设置导航栏背景色（柔和的浅绿色）
       setStyleSheet("background-color: #f5fbf5;");

       QVBoxLayout *layout = new QVBoxLayout(this);
       layout->setSpacing(0); // 按钮之间无间距
       layout->setContentsMargins(0, 10, 0, 10); // 上下有10px边距

       // 创建按钮组
       buttonGroup = new QButtonGroup(this);
       buttonGroup->setExclusive(true); // 设置互斥，确保只有一个按钮被选中

       // 创建导航按钮
       farmManagementBtn = createNavButton("农场管理");
      // collaborationBtn = createNavButton("协作管理");
       farmInfoBtn = createNavButton("农场信息");

       // 将按钮添加到按钮组
       buttonGroup->addButton(farmManagementBtn);
       if(isAdmin==true)
       {
           collaborationBtn = createNavButton("协作管理");
           buttonGroup->addButton(collaborationBtn);
           //qDebug()<<isAdmin;
       }
       buttonGroup->addButton(farmInfoBtn);

       // 添加到布局
       layout->addWidget(farmManagementBtn);

       if(isAdmin==true)
       {
            layout->addWidget(collaborationBtn);
           // qDebug()<<isAdmin;
}
       layout->addWidget(farmInfoBtn);
       layout->addStretch(); // 添加弹性空间使按钮居顶

       // 连接按钮信号
       connect(farmManagementBtn, &QPushButton::clicked, this, &NavigationBar::farmManagementSelected);
       if(isAdmin==true)
       {
            connect(collaborationBtn, &QPushButton::clicked, this, &NavigationBar::collaborationSelected);
           // qDebug()<<isAdmin;
       }
       connect(farmInfoBtn, &QPushButton::clicked, this, &NavigationBar::farmInfoSelected);

       // 连接按钮组的信号
//       connect(buttonGroup, QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked),
//               this, &NavigationBar::handleButtonClicked);

       // 设置默认选中的按钮
       farmManagementBtn->setChecked(true);
}
